Pandas Python kutubxonasida DataFrame'larni birlashtirish va qo'shish bo'yicha to'liq qo'llanma, ichki, tashqi, chap va o'ng qo'shish kabi turli strategiyalarni qamrab oladi.
Python Pandas Biriktirish: Ma'lumotlar Tahlili uchun DataFrame Qo'shish Strategiyalarini O'zlashtirish
Ma'lumotlarni manipulyatsiya qilish ma'lumotlar tahlilining muhim jihatidir va Python'dagi Pandas kutubxonasi bu maqsadlar uchun kuchli vositalarni taqdim etadi. Ushbu vositalar orasida DataFrame'larni birlashtirish va qo'shish umumiy ustunlar yoki indekslar asosida ma'lumotlar to'plamlarini birlashtirish uchun zarur operatsiyalardir. Ushbu to'liq qo'llanma Pandas'dagi turli DataFrame qo'shish strategiyalarini o'rganadi, sizni turli manbalardan olingan ma'lumotlarni samarali birlashtirish va tahlil qilish bilimini beradi.
DataFrame Birlashtirish va Qo'shishni Tushunish
DataFrame'larni birlashtirish va qo'shish umumiy ustun yoki indeks asosida ikkita yoki undan ortiq DataFrame'larni yagona DataFramega birlashtirishni o'z ichiga oladi. merge va join o'rtasidagi asosiy farq shundaki, merge Pandas kutubxonasining funksiyasi bo'lib, odatda ustunlar bo'yicha DataFrame'larni qo'shadi, join esa DataFrame usuli bo'lib, u asosan indekslar bo'yicha DataFrame'larni qo'shadi, garchi uni ustunlar bilan ham ishlatish mumkin.
Asosiy Tushunchalar
- DataFrame'lar: Turli turlarga ega ustunlari bo'lgan ikki o'lchovli yorliqli ma'lumotlar tuzilmalari.
- Umumiy Ustunlar/Indekslar: DataFrame'lar bo'ylab bir xil nom va ma'lumotlar turiga ega bo'lgan ustunlar yoki indekslar, birlashtirish/qo'shish uchun asos bo'lib xizmat qiladi.
- Qo'shish Turlari: Ichki, tashqi, chap va o'ng qo'shishlarni o'z ichiga olgan holda, birlashtirish/qo'shish jarayonida mos kelmaydigan qatorlarni qayta ishlashning turli strategiyalari.
pd.merge() bilan DataFrame Birlashtirish
pd.merge() funksiyasi ustunlar asosida DataFrame'larni birlashtirish uchun asosiy vositadir. U bir yoki bir nechta umumiy ustunlar asosida ma'lumotlarni birlashtirish uchun moslashuvchan usulni taklif etadi.
Sintaksis
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
Parametrlar
- left: Birlashtiriladigan chap DataFrame.
- right: Birlashtiriladigan o'ng DataFrame.
- how: Amalga oshiriladigan birlashtirish turi ('inner', 'outer', 'left', 'right'). Defolt 'inner'.
- on: Qo'shish uchun ustun(lar) nomi. Ular ikkala DataFrame'da ham bo'lishi kerak.
- left_on: Qo'shish tugmachalari sifatida ishlatiladigan chap DataFrame'dagi ustun(lar) nomi.
- right_on: Qo'shish tugmachalari sifatida ishlatiladigan o'ng DataFrame'dagi ustun(lar) nomi.
- left_index: Agar True bo'lsa, qo'shish tugmachasi(lari) sifatida chap DataFrame'dan indeksdan foydalaning.
- right_index: Agar True bo'lsa, qo'shish tugmachasi(lari) sifatida o'ng DataFrame'dan indeksdan foydalaning.
- sort: Qo'shish tugmachalari bo'yicha natija DataFrame'ni leksikografik tartiblang. Defolt False.
- suffixes: Bir-biriga mos keladigan ustun nomlariga qo'llaniladigan qator qo'shimchalari to'plami. Defolt ('_x', '_y').
- copy: Agar False bo'lsa, yangi DataFrame'ga ma'lumotlarni iloji boricha nusxalashdan saqlaning. Defolt True.
- indicator: Agar True bo'lsa, har bir qatorning manbasini ko'rsatuvchi '_merge' nomli ustun qo'shadi.
- validate: Birlashtirish belgilangan turdagi ekanligini tekshiradi. "one_to_one", "one_to_many", "many_to_one", "many_to_many".
Qo'shish Turlari Tushuntirildi
pd.merge() dagi how parametri bajariladigan qo'shish turini belgilaydi. Turli qo'shish turlari mos kelmaydigan qatorlarni har xil usulda qayta ishlaydi.
Ichki Qo'shish
Ichki qo'shish qo'shish tugmachalari asosida ikkala DataFrame'da mos keladigan qiymatlarga ega bo'lgan qatorlarni qaytaradi. Mos kelmaydigan qiymatlarga ega qatorlar natijadan chiqariladi.
Misol:
Ikkita DataFrame'ni ko'rib chiqing:
import pandas as pd
# DataFrame 1: Mijoz Buyurtmalari
df_orders = pd.DataFrame({
'order_id': [1, 2, 3, 4, 5],
'customer_id': [101, 102, 103, 104, 105],
'product_id': [1, 2, 1, 3, 2],
'quantity': [2, 1, 3, 1, 2]
})
# DataFrame 2: Mijoz Ma'lumotlari
df_customers = pd.DataFrame({
'customer_id': [101, 102, 103, 106],
'customer_name': ['Alice', 'Bob', 'Charlie', 'David'],
'country': ['USA', 'Canada', 'UK', 'Australia']
})
# Ichki Qo'shish
df_inner = pd.merge(df_orders, df_customers, on='customer_id', how='inner')
print(df_inner)
Natija:
order_id customer_id product_id quantity customer_name country
0 1 101 1 2 Alice USA
1 2 102 2 1 Bob Canada
2 3 103 1 3 Charlie UK
Ushbu misolda, ichki qo'shish customer_id ustuni asosida df_orders va df_customers DataFrame'larini birlashtiradi. Natijada faqat buyurtma bergan mijozlar kiritiladi. 'David' mijoz (customer_id 106) chiqarib tashlanadi, chunki uning buyurtmalari yo'q.
Tashqi Qo'shish (To'liq Tashqi Qo'shish)
Tashqi qo'shish mos kelmaydigan qatorlarni o'z ichiga olgan holda, ikkala DataFrame'dan barcha qatorlarni qaytaradi. Agar bir qatorda boshqa DataFrame'da mos keladigan qator bo'lmasa, mos keladigan ustunlar NaN (Raqam emas) qiymatlarini o'z ichiga oladi.
Misol:
# Tashqi Qo'shish
df_outer = pd.merge(df_orders, df_customers, on='customer_id', how='outer')
print(df_outer)
Natija:
order_id customer_id product_id quantity customer_name country
0 1.0 101 1.0 2.0 Alice USA
1 2.0 102 2.0 1.0 Bob Canada
2 3.0 103 1.0 3.0 Charlie UK
3 4.0 104 3.0 1.0 NaN NaN
4 5.0 105 2.0 2.0 NaN NaN
5 NaN 106 NaN NaN David Australia
Tashqi qo'shish barcha mijozlar va barcha buyurtmalarni o'z ichiga oladi. 104 va 105 mijozlar buyurtmalarga ega, ammo mijoz ma'lumotlari yo'q, 106 mijoz esa mijoz ma'lumotlariga ega, ammo buyurtmalari yo'q. Yo'q qiymatlar NaN sifatida ko'rsatiladi.
Chap Qo'shish
Chap qo'shish chap DataFrame'dan barcha qatorlarni va o'ng DataFrame'dan mos keladigan qatorlarni qaytaradi. Agar chap DataFrame'dagi qatorda o'ng DataFrame'da mos keladigan qator bo'lmasa, o'ng DataFrame'dan mos keladigan ustunlar NaN qiymatlarini o'z ichiga oladi.
Misol:
# Chap Qo'shish
df_left = pd.merge(df_orders, df_customers, on='customer_id', how='left')
print(df_left)
Natija:
order_id customer_id product_id quantity customer_name country
0 1 101 1 2 Alice USA
1 2 102 2 1 Bob Canada
2 3 103 1 3 Charlie UK
3 4 104 3 1 NaN NaN
4 5 105 2 2 NaN NaN
Chap qo'shish df_orders dan barcha buyurtmalarni o'z ichiga oladi. 104 va 105 mijozlar buyurtmalarga ega, ammo mijoz ma'lumotlari yo'q, shuning uchun ushbu buyurtmalar uchun customer_name va country ustunlari NaN hisoblanadi.
O'ng Qo'shish
O'ng qo'shish o'ng DataFrame'dan barcha qatorlarni va chap DataFrame'dan mos keladigan qatorlarni qaytaradi. Agar o'ng DataFrame'dagi qatorda chap DataFrame'da mos keladigan qator bo'lmasa, chap DataFrame'dan mos keladigan ustunlar NaN qiymatlarini o'z ichiga oladi.
Misol:
# O'ng Qo'shish
df_right = pd.merge(df_orders, df_customers, on='customer_id', how='right')
print(df_right)
Natija:
order_id customer_id product_id quantity customer_name country
0 1.0 101 1.0 2.0 Alice USA
1 2.0 102 2.0 1.0 Bob Canada
2 3.0 103 1.0 3.0 Charlie UK
3 NaN 106 NaN NaN David Australia
O'ng qo'shish df_customers dan barcha mijozlarni o'z ichiga oladi. 106 mijoz mijoz ma'lumotlariga ega, ammo buyurtmalari yo'q, shuning uchun ushbu mijoz uchun order_id, product_id va quantity ustunlari NaN hisoblanadi.
df.join() bilan DataFrame Qo'shish
df.join() usuli asosan DataFrame'larni ularning indekslari asosida qo'shish uchun ishlatiladi. U ustunlar bo'yicha ham qo'shish uchun ishlatilishi mumkin, ammo ustun-asosidagi qo'shishlar uchun pd.merge() dan foydalanish odatda qulayroq.
Sintaksis
DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
Parametrlar
- other: Qo'shiladigan boshqa DataFrame.
- on: Qo'shish uchun ustun nomi. Agar indeks qo'shish tugmasi sifatida ishlatilmasa, majburiy ravishda yuborilishi kerak.
- how: Chap va o'ng to'plamlarning operatsiyasini qanday qayta ishlash kerak. Defolt 'left'.
- lsuffix: Bir-biriga mos keladigan ustun nomlarini bekor qilish uchun chap DataFrame'dan ishlatiladigan qo'shimcha.
- rsuffix: Bir-biriga mos keladigan ustun nomlarini bekor qilish uchun o'ng DataFrame'dan ishlatiladigan qo'shimcha.
- sort: Qo'shish tugmachalari bo'yicha natija DataFrame'ni leksikografik tartiblang. Defolt False.
Indeks bo'yicha Qo'shish
Indeks bo'yicha qo'shishda on parametri ishlatilmaydi.
Misol:
# DataFrame 1: Mijoz Buyurtmalari (Mijoz ID Indeks sifatida)
df_orders_index = df_orders.set_index('customer_id')
# DataFrame 2: Mijoz Ma'lumotlari (Mijoz ID Indeks sifatida)
df_customers_index = df_customers.set_index('customer_id')
# Indeks bo'yicha Qo'shish (Chap Qo'shish)
df_join_index = df_orders_index.join(df_customers_index, how='left')
print(df_join_index)
Natija:
order_id product_id quantity customer_name country
customer_id
101 1 1 2 Alice USA
102 2 2 1 Bob Canada
103 3 1 3 Charlie UK
104 4 3 1 NaN NaN
105 5 2 2 NaN NaN
Ushbu misolda, join() usuli indeks bo'yicha (`customer_id`) chap qo'shishni amalga oshirish uchun ishlatiladi. Natija pd.merge() dan foydalangan holda chap qo'shishga o'xshaydi, lekin qo'shish ustun o'rniga indeksga asoslangan.
Ustun bo'yicha Qo'shish
df.join() dan foydalanib ustun bo'yicha qo'shish uchun siz on parametrini belgilashingiz kerak.
Misol:
# Ustun bo'yicha qo'shish
df_join_column = df_orders.join(df_customers.set_index('customer_id'), on='customer_id', how='left')
print(df_join_column)
Natija:
order_id customer_id product_id quantity customer_name country
0 1 101 1 2 Alice USA
1 2 102 2 1 Bob Canada
2 3 103 1 3 Charlie UK
3 4 104 3 1 NaN NaN
4 5 105 2 2 NaN NaN
Ushbu misol df_orders va df_customers ni customer_id ustuni orqali df.join() yordamida birlashtirishni ko'rsatadi. E'tibor bering, customer_id qo'shishdan oldin df_customers da indeks sifatida belgilangan.
Bir-biriga Mos Keladigan Ustunlarni Boshqarish
DataFrame'larni birlashtirish yoki qo'shishda, bir-biriga mos keladigan ustun nomlari (ikkala DataFrame'da bir xil nomdagi ustunlar) bilan duch kelish mumkin. Pandas bu vaziyatlarni boshqarish uchun pd.merge() da suffixes parametrini va df.join() da lsuffix va rsuffix parametrlarini taqdim etadi.
pd.merge() da suffixes dan Foydalanish
suffixes parametri bir-biriga mos keladigan ustun nomlariga ularni ajratish uchun qo'shimchalarni qo'llash imkonini beradi.
Misol:
# DataFrame 1: Mahsulot Ma'lumotlari
df_products1 = pd.DataFrame({
'product_id': [1, 2, 3],
'product_name': ['Product A', 'Product B', 'Product C'],
'price': [10, 20, 15]
})
# DataFrame 2: Mahsulot Ma'lumotlari (potentsial yangilangan narxlar bilan)
df_products2 = pd.DataFrame({
'product_id': [1, 2, 4],
'product_name': ['Product A', 'Product B', 'Product D'],
'price': [12, 18, 25]
})
# Qo'shimchalar bilan birlashtirish
df_merged_suffixes = pd.merge(df_products1, df_products2, on='product_id', suffixes=('_old', '_new'))
print(df_merged_suffixes)
Natija:
product_id product_name_old price_old product_name_new price_new
0 1 Product A 10 Product A 12
1 2 Product B 20 Product B 18
Ushbu misolda, product_name va price ustunlari ikkala DataFrame'da ham mavjud. suffixes parametri chap va o'ng DataFrame'lardan ustunlarni ajratish uchun mos ravishda _old va _new qo'shimchalarini qo'shadi.
df.join() da lsuffix va rsuffix dan Foydalanish
lsuffix va rsuffix parametrlari df.join() uchun o'xshash funksionallikni taqdim etadi. lsuffix chap DataFrame'ning mos keladigan ustunlariga qo'shiladi, rsuffix esa o'ng DataFrame'ning mos keladigan ustunlariga qo'shiladi.
Misol:
# lsuffix va rsuffix bilan qo'shish
df_products1_index = df_products1.set_index('product_id')
df_products2_index = df_products2.set_index('product_id')
df_joined_suffixes = df_products1_index.join(df_products2_index, lsuffix='_old', rsuffix='_new', how='outer')
print(df_joined_suffixes)
Natija:
product_name_old price_old product_name_new price_new
product_id
1 Product A 10.0 Product A 12.0
2 Product B 20.0 Product B 18.0
3 Product C 15.0 NaN NaN
4 NaN NaN Product D 25.0
Amaliy Misollar va Foydalanish Holatlari
DataFrame'larni birlashtirish va qo'shish turli ma'lumotlar tahlili stsenariyalarida keng qo'llaniladi. Mana ba'zi amaliy misollar:
Sotuv Ma'lumotlarini Mahsulot Ma'lumotlari bilan Birlashtirish
Umumiy foydalanish holati sotuv ma'lumotlarini mahsulot ma'lumotlari bilan birlashtirishdir. Agar siz sotuv operatsiyalarini o'z ichiga olgan DataFrame va mahsulot tafsilotlarini o'z ichiga olgan boshqa DataFrame mavjud bo'lsa. Siz sotuv ma'lumotlarini mahsulot ma'lumotlari bilan boyitish uchun bu DataFrame'larni birlashtirishingiz mumkin.
Misol:
# Sotuv Operatsiyalari Ma'lumotlari
df_sales = pd.DataFrame({
'transaction_id': [1, 2, 3, 4, 5],
'product_id': [101, 102, 103, 101, 104],
'quantity': [2, 1, 3, 1, 2],
'sales_date': ['2023-01-15', '2023-02-20', '2023-03-10', '2023-04-05', '2023-05-01']
})
# Mahsulot Ma'lumotlari
df_products = pd.DataFrame({
'product_id': [101, 102, 103, 104],
'product_name': ['Laptop', 'Mouse', 'Keyboard', 'Monitor'],
'category': ['Electronics', 'Electronics', 'Electronics', 'Electronics'],
'price': [1200, 25, 75, 300]
})
# Sotuv Ma'lumotlarini Mahsulot Ma'lumotlari bilan Birlashtirish
df_sales_enriched = pd.merge(df_sales, df_products, on='product_id', how='left')
print(df_sales_enriched)
Natija:
transaction_id product_id quantity sales_date product_name category price
0 1 101 2 2023-01-15 Laptop Electronics 1200
1 2 102 1 2023-02-20 Mouse Electronics 25
2 3 103 3 2023-03-10 Keyboard Electronics 75
3 4 101 1 2023-04-05 Laptop Electronics 1200
4 5 104 2 2023-05-01 Monitor Electronics 300
Natijaviy DataFrame df_sales_enriched sotuv operatsiyalarini mos keladigan mahsulot ma'lumotlari bilan birga o'z ichiga oladi, bu esa sotuv tendentsiyalari va mahsulot samaradorligini yanada batafsil tahlil qilish imkonini beradi.
Mijoz Ma'lumotlarini Demografik Ma'lumotlar bilan Birlashtirish
Yana bir keng tarqalgan foydalanish holati mijoz ma'lumotlarini demografik ma'lumotlar bilan birlashtirishdir. Bu demografik omillar asosida mijoz xulq-atvorini tahlil qilish imkonini beradi.
Misol:
# Mijoz Ma'lumotlari
df_customers = pd.DataFrame({
'customer_id': [1, 2, 3, 4, 5],
'customer_name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'city': ['New York', 'London', 'Tokyo', 'Sydney', 'Berlin']
})
# Demografik Ma'lumotlar
df_demographics = pd.DataFrame({
'city': ['New York', 'London', 'Tokyo', 'Sydney', 'Berlin'],
'population': [8419000, 8982000, 13960000, 5312000, 3769000],
'average_income': [75000, 65000, 85000, 90000, 55000]
})
# Mijoz Ma'lumotlarini Demografik Ma'lumotlar bilan Birlashtirish
df_customer_demographics = pd.merge(df_customers, df_demographics, on='city', how='left')
print(df_customer_demographics)
Natija:
customer_id customer_name city population average_income
0 1 Alice New York 8419000 75000
1 2 Bob London 8982000 65000
2 3 Charlie Tokyo 13960000 85000
3 4 David Sydney 5312000 90000
4 5 Eve Berlin 3769000 55000
Natijaviy DataFrame df_customer_demographics mijoz ma'lumotlarini ularning tegishli shaharlarining demografik ma'lumotlari bilan birga o'z ichiga oladi, bu esa shahar demografiyasiga asoslangan mijoz xulq-atvorini tahlil qilish imkonini beradi.
Global Ta'minot Zanjiri Ma'lumotlarini Tahlil Qilish
Pandas birlashmasi global ta'minot zanjiri ma'lumotlarini tahlil qilish uchun qimmatlidir, bu yerda ma'lumotlar ko'pincha bir nechta jadvallarda tarqalgan bo'ladi. Masalan, yetkazib beruvchi ma'lumotlarini, yuk tashish ma'lumotlarini va sotuv raqamlarini bog'lash orqali tiqilinchlarni aniqlash va logistikani optimallashtirish mumkin.
Misol:
# Yetkazib Beruvchi Ma'lumotlari
df_suppliers = pd.DataFrame({
'supplier_id': [1, 2, 3],
'supplier_name': ['GlobalTech', 'EuroParts', 'AsiaSource'],
'location': ['Taiwan', 'Germany', 'China']
})
# Yuk Tashish Ma'lumotlari
df_shipments = pd.DataFrame({
'shipment_id': [101, 102, 103, 104],
'supplier_id': [1, 2, 3, 1],
'destination': ['USA', 'Canada', 'Australia', 'Japan'],
'shipment_date': ['2023-01-10', '2023-02-15', '2023-03-20', '2023-04-25']
})
# Yetkazib Beruvchi va Yuk Tashish Ma'lumotlarini Birlashtirish
df_supply_chain = pd.merge(df_shipments, df_suppliers, on='supplier_id', how='left')
print(df_supply_chain)
Natija:
shipment_id supplier_id destination shipment_date supplier_name location
0 101 1 USA 2023-01-10 GlobalTech Taiwan
1 102 2 Canada 2023-02-15 EuroParts Germany
2 103 3 Australia 2023-03-20 AsiaSource China
3 104 1 Japan 2023-04-25 GlobalTech Taiwan
Murakkab Birlashtirish Usullari
Bir nechta Ustunlar bo'yicha Birlashtirish
Siz on parametriga ustun nomlari ro'yxatini yuborib, bir nechta ustunlar asosida DataFrame'larni birlashtirishingiz mumkin.
Misol:
# DataFrame 1
df1 = pd.DataFrame({
'product_id': [1, 1, 2, 2],
'color': ['red', 'blue', 'red', 'blue'],
'quantity': [10, 15, 20, 25]
})
# DataFrame 2
df2 = pd.DataFrame({
'product_id': [1, 1, 2, 2],
'color': ['red', 'blue', 'red', 'blue'],
'price': [5, 7, 8, 10]
})
# Bir nechta ustunlar bo'yicha birlashtirish
df_merged_multiple = pd.merge(df1, df2, on=['product_id', 'color'], how='inner')
print(df_merged_multiple)
Natija:
product_id color quantity price
0 1 red 10 5
1 1 blue 15 7
2 2 red 20 8
3 2 blue 25 10
Turli Ustun Nomlari bilan Birlashtirish
Agar qo'shish ustunlari ikkita DataFrame'da turli nomlarga ega bo'lsa, birlashtirish uchun ishlatiladigan ustun nomlarini belgilash uchun left_on va right_on parametrlaridan foydalanishingiz mumkin.
Misol:
# DataFrame 1
df1 = pd.DataFrame({
'product_id': [1, 2, 3],
'product_name': ['Product A', 'Product B', 'Product C']
})
# DataFrame 2
df2 = pd.DataFrame({
'id': [1, 2, 4],
'price': [10, 20, 25]
})
# Turli ustun nomlari bilan birlashtirish
df_merged_different = pd.merge(df1, df2, left_on='product_id', right_on='id', how='left')
print(df_merged_different)
Natija:
product_id product_name id price
0 1 Product A 1.0 10.0
1 2 Product B 2.0 20.0
2 3 Product C NaN NaN
Birlashtirish Tahlili uchun indicator dan Foydalanish
pd.merge() dagi indicator parametri natijaviy DataFrame'ga _merge nomli ustun qo'shadi, bu esa har bir qatorning manbasini ko'rsatadi. Bu mos kelgan va mos kelmagan qatorlarni tushunish uchun foydalidir.
Misol:
# Indicator bilan birlashtirish
df_merged_indicator = pd.merge(df_orders, df_customers, on='customer_id', how='outer', indicator=True)
print(df_merged_indicator)
Natija:
order_id customer_id product_id quantity customer_name country _merge
0 1.0 101 1.0 2.0 Alice USA both
1 2.0 102 2.0 1.0 Bob Canada both
2 3.0 103 1.0 3.0 Charlie UK both
3 4.0 104 3.0 1.0 NaN NaN left_only
4 5.0 105 2.0 2.0 NaN NaN left_only
5 NaN 106 NaN NaN David Australia right_only
_merge ustuni qator ikkala DataFrame'dan ham (`both`), faqat chap DataFrame'dan (`left_only`), yoki faqat o'ng DataFrame'dan (`right_only`) ekanligini ko'rsatadi.
Birlashtirish Turlarini Tasdiqlash
validate parametri birlashtirish operatsiyasining DataFrame'lar orasidagi kutilgan munosabat turlariga mos kelishini ta'minlaydi (masalan, 'one_to_one', 'one_to_many'). Bu ma'lumotlar nomuvofiq va xatoliklardan qochishga yordam beradi.
Misol:
# Bir-biriga nisbatan tasdiqlash misoli
df_users = pd.DataFrame({
'user_id': [1, 2, 3],
'username': ['john_doe', 'jane_smith', 'peter_jones']
})
df_profiles = pd.DataFrame({
'user_id': [1, 2, 3],
'profile_description': ['Software Engineer', 'Data Scientist', 'Project Manager']
})
# Bir-biriga nisbatan birlashtirishni tasdiqlash bilan bajarish
merged_df = pd.merge(df_users, df_profiles, on='user_id', validate='one_to_one')
print(merged_df)
Agar birlashtirish belgilangan tasdiqni buzsa (masalan, 'one_to_one' belgilanganda ko'p-bir munosabat bo'lsa), MergeError xabari ko'rsatiladi, bu ma'lumotlar yaxlitligi bilan bog'liq muammolar haqida ogohlantiradi.
Ishlashga oid Mulohazalar
DataFrame'larni birlashtirish va qo'shish, ayniqsa katta ma'lumotlar to'plamlari uchun hisoblash jihatidan qimmat bo'lishi mumkin. Ishlashni yaxshilash bo'yicha ba'zi maslahatlar:
- To'g'ri qo'shish turidan foydalaning: To'g'ri qo'shish turini tanlash ishlamani sezilarli darajada ta'sir qilishi mumkin. Masalan, faqat mos keladigan qatorlar kerak bo'lsa, ichki qo'shishdan foydalaning.
- Qo'shish ustunlarini indekslang: Qo'shish ustunlarini indekslash birlashtirish jarayonini tezlashtirishi mumkin.
- To'g'ri ma'lumot turlaridan foydalaning: Qo'shish ustunlari mos keladigan ma'lumot turlariga ega ekanligiga ishonch hosil qiling.
- Keraksiz nusxalashlardan saqlaning: Keraksiz ma'lumot nusxalarini yaratishdan qochish uchun
pd.merge()vadf.join()dacopy=Falseni o'rnating.
Xulosa
DataFrame'larni birlashtirish va qo'shish ma'lumotlar tahlilida asosiy operatsiyalardir. Turli qo'shish turlari va usullarini tushunish orqali siz turli manbalardan olingan ma'lumotlarni samarali birlashtira olasiz va tahlil qila olasiz, qimmatli tushunchalarni ochib, asoslangan qaror qabul qilishni rag'batlantirasiz. Sotuv ma'lumotlarini mahsulot ma'lumotlari bilan birlashtirishdan tortib, global ta'minot zanjirlarini tahlil qilishgacha, bu usullarni o'zlashtirish sizni murakkab ma'lumotlarni manipulyatsiya qilish vazifalarini ishonch bilan bajarishga tayyorlaydi. Katta ma'lumotlar to'plamlari bilan ishlashda ishlashga oid ta'sirlarni hisobga olishni unutmang va yanada mustahkam va chuqur tahlil qilish uchun indicator va validate parametrlari kabi ilg'or xususiyatlardan foydalaning.